package com.ezjie.ielts.util;

import android.content.Context;
import android.text.TextUtils;

import com.alibaba.fastjson.JSON;
import com.ezjie.ielts.model.WordHomeData;

/**
 * 单词首页缓存 工具存储类
 * 
 * @author renyangyang
 *
 */
public class WordHomeDataUtil {
	// 第一次发布时间 2015.0624
	// 因为每次发版本，如果替换了数据库内容，就要修改 这个 WORD_IS_EXIST字段，修改标准：后面加1，2，3，4，5 这样就会替换数据库文件
	public static final String WORD_IS_EXIST = "word_is_exist";
	// 单词数据库更新的key 因为每次发版本，如果替换了数据库内容，就要修改 这个 更新时间这个字段，修改标准：后面加1，2，3，4，5
	// 这样就会替换默认的更新时间
	public static final String WORD_UPDATE_TIME_KEY = "word_update_time";
	// 单词数据库更新的默认时间
	public static final String WORD_UPDATE_TIME_DEFAULT_VALUE = "1441789827";
	// 单词是否有更新的key
	public static final String WORD_HAVE_UPDATE = "word_have_update";

	public static final String HEIGHT_TITLE_BAR = "height_title_bar";
	public static final String HEIGHT_MENU_BAR = "height_menu_bar";
	/** 首页保存数据的时间 */
	public static final String WORD_SAVE_DATE = "word_save_date";
	/** 首页保存数据 */
	public static final String WORD_HOME_DATE = "word_home_date";
	/** 今日已学数量 +1 */
	public static final String WORD_TODAY_STUDIED = "word_today_studied";
	/** 今日学习中状态 只有0 和1 */
	public static final String WORD_TODAY_STUDYING = "word_today_studying";
	/** 第一次学习结束后 待复习的数量 正数 */
	public static final String WORD_REVIEW_NUM = "word_review_num";
	/** 已复习增加的数量 */
	public static final String WORD_REVIEWED_NUM = "word_reviewed_num";
	/** 正在学习的单词数量 为正是增加，为负为减少 */
	public static final String WORD_STUDYING_NUM = "word_studying_num";
	/** 掌握的单词数量 为正是增加，为负为减少 */
	public static final String WORD_MASTER_NUM = "word_master_num";

	/** 首页听力阅读离线 */
	public static final String OFFLINE_HOMEPAGE = "offline_homepage";
	/** 听力页听力阅读离线 */
	public static final String OFFLINE_HEARING = "offline_hearing";
	/** 单词首页--单词还需要多久能复习玩 */
	public static final String WORD_DAYS_FUTURE = "days_future";

	public static void putOfflineHomepage(Context context, boolean flag) {
		PreferencesUtil.putBoolean(context, OFFLINE_HOMEPAGE, flag);
	}

	public static boolean getOfflineHomepage(Context context) {
		return PreferencesUtil.getBoolean(context, OFFLINE_HOMEPAGE, false);
	}

	public static void putOfflineHearing(Context context, boolean flag) {
		PreferencesUtil.putBoolean(context, OFFLINE_HEARING, flag);
	}

	public static boolean getOfflineHearing(Context context) {
		return PreferencesUtil.getBoolean(context, OFFLINE_HEARING, false);
	}

	/**
	 * 单词数据库 更新的时间，用于请求接口 是否有单词更新了， 每次发版本这个默认值要更改
	 * 
	 * @param context
	 * @param updateTime
	 */
	public static void putWordUpdateTime(Context context, String updateTime) {
		PreferencesUtil.putString(context, WORD_UPDATE_TIME_KEY, updateTime);
	}

	public static String getWordUpdateTime(Context context) {
		return PreferencesUtil.getString(context, WORD_UPDATE_TIME_KEY, WORD_UPDATE_TIME_DEFAULT_VALUE);
	}

	public static void putWordHaveUpdate(Context context, boolean flag) {
		PreferencesUtil.putBoolean(context, WORD_HAVE_UPDATE, flag);
	}

	public static boolean getWordHaveUpdate(Context context) {
		return PreferencesUtil.getBoolean(context, WORD_HAVE_UPDATE, false);
	}

	/**
	 * 保存的是 网络请求数据的时间，不是 每次保存首页数据的时间
	 * 
	 * @param context
	 * @param value
	 */
	public static void putWordSaveDate(Context context) {
		String currentTime = DateUtil.getCurrentTimeYYYYMMDD();
		PreferencesUtil.putString(context, WORD_SAVE_DATE, currentTime);
	}

	/**
	 * 判断日期是否为今天的，否则重新请求数据
	 * 
	 * @return
	 */
	public static boolean isTodayData(Context context) {
		String saveDate = PreferencesUtil.getString(context, WORD_SAVE_DATE, "2000-01-01");
		String currentTime = DateUtil.getCurrentTimeYYYYMMDD();
		if (saveDate.equals(currentTime)) {
			return true;
		} else {
			return false;
		}
	}

	/**
	 * 保存单词首页的数据
	 */
	public static void putWordHomeData(Context context, WordHomeData wordHomeData) {
		if (wordHomeData != null) {
			PreferencesUtil.putString(context, WORD_HOME_DATE, JSON.toJSONString(wordHomeData));
		} else {
			PreferencesUtil.putString(context, WORD_HOME_DATE, "");
		}
	}

	public static WordHomeData getWordHomeData(Context context) {
		String homeData = PreferencesUtil.getString(context, WORD_HOME_DATE, "");
		if (TextUtils.isEmpty(homeData)) {
			return null;
		} else {
			try {
				WordHomeData wordHomeData = JSON.parseObject(homeData, WordHomeData.class);
				return wordHomeData;
			} catch (Exception e) {
				return null;
			}
		}
	}

	/**
	 * 今日已学 数量+1
	 * 
	 * @param context
	 */
	public static void putTodayStudied(Context context) {
		int todayStudied = getTodayStudied(context);
		PreferencesUtil.putInt(context, WORD_TODAY_STUDIED, todayStudied + 1);
	}

	public static void putTodayStudied0(Context context) {
		PreferencesUtil.putInt(context, WORD_TODAY_STUDIED, 0);
	}

	public static int getTodayStudied(Context context) {
		return PreferencesUtil.getInt(context, WORD_TODAY_STUDIED, 0);
	}

	/**
	 * 今日学习中 状态，只有0 和1 为0说明需要筛词了，为1说明需要第一次学习了
	 * 
	 * @param context
	 * @param value
	 */
	public static void putTodayStudying(Context context, int value) {
		PreferencesUtil.putInt(context, WORD_TODAY_STUDYING, value);
	}

	public static void putTodayStudying_1(Context context) {
		PreferencesUtil.putInt(context, WORD_TODAY_STUDYING, -1);
	}

	public static int getTodayStudying(Context context) {
		// 默认为-1就不做处理
		return PreferencesUtil.getInt(context, WORD_TODAY_STUDYING, -1);
	}

	/**
	 * 第一次学习后 新增的复习数量
	 * 
	 * @param context
	 * @param value
	 *            为1
	 */
	public static void putReviewNum(Context context, int value) {
		int reviewNum = getReviewNum(context);

		PreferencesUtil.putInt(context, WORD_REVIEW_NUM, reviewNum + value);
	}

	public static void putReviewNum0(Context context) {
		PreferencesUtil.putInt(context, WORD_REVIEW_NUM, 0);
	}

	public static int getReviewNum(Context context) {
		return PreferencesUtil.getInt(context, WORD_REVIEW_NUM, 0);
	}

	/**
	 * 已复习的数量 每调用一次就加一
	 * 
	 * @param context
	 */
	public static void putReviewedNum(Context context) {
		int reviewedNum = getReviewedNum(context);
		PreferencesUtil.putInt(context, WORD_REVIEWED_NUM, reviewedNum + 1);
	}

	public static void putReviewedNum0(Context context) {
		PreferencesUtil.putInt(context, WORD_REVIEWED_NUM, 0);
	}

	public static int getReviewedNum(Context context) {
		return PreferencesUtil.getInt(context, WORD_REVIEWED_NUM, 0);
	}

	/**
	 * 新学单词的数量
	 * 
	 * @param context
	 * @param value
	 *            这次新学的数量 是增加了多少还是 减少了多少
	 */
	public static void putWordStudyingNum(Context context, int value) {
		int wordStudingNum = getWordStudingNum(context);
		PreferencesUtil.putInt(context, WORD_STUDYING_NUM, wordStudingNum + value);
	}

	public static void putWordStudyingNum0(Context context) {
		PreferencesUtil.putInt(context, WORD_STUDYING_NUM, 0);
	}

	public static int getWordStudingNum(Context context) {
		return PreferencesUtil.getInt(context, WORD_STUDYING_NUM, 0);
	}

	/**
	 * 掌握单词的数量
	 * 
	 * @param context
	 * @param value
	 *            这次新学的数量 是增加了多少还是 减少了多少
	 */
	public static void putWordMasterNum(Context context, int value) {
		int wordMasterNum = getWordMasterNum(context);
		PreferencesUtil.putInt(context, WORD_MASTER_NUM, wordMasterNum + value);
	}

	public static void putWordMasterNum0(Context context) {
		PreferencesUtil.putInt(context, WORD_MASTER_NUM, 0);
	}

	public static int getWordMasterNum(Context context) {
		return PreferencesUtil.getInt(context, WORD_MASTER_NUM, 0);
	}

	/**
	 * 单词还需要多久能完成
	 * 
	 * @param context
	 * @param days
	 */
	public static void putWordDaysFuture(Context context, int days) {
		PreferencesUtil.putInt(context, WORD_DAYS_FUTURE, days);
	}

	public static int getWordDaysFuture(Context context) {
		return PreferencesUtil.getInt(context, WORD_DAYS_FUTURE, -1);
	}
}
